"""
五、面向对象的三大特性

1、封装
·将属性和方法书写到类的里面的操作，即为封装
·封装可以为属性和方法添加私有权限

2、继承
·子类默认继承父类的所有属性和方法
·子类可以重写父类属性和方法

3、多态
·传入不同的对象，产生不同的结果

"""


# 多态
class Animal(object):

    def say(self):
        pass


class Dog(Animal):
    print('旺旺')


class Cat(Animal):
    print('喵喵')


def test(obj:Animal):    # Animal类型，传对应的不同的对象，都为Animal类型
    obj.say()


d = Dog()
c = Cat()

test(d)
test(c)
